package com.link.base.base.signin.service;

import com.link.base.base.signin.model.SignIn;
import com.link.core.basic.service.BasicService;

/**
 * @author unknown
 * @date unknown
 * @comments 签到
 */
public interface SignInService extends BasicService<SignIn> {

    /**
     * 当前登录用户签到
     *
     * @param userId 当前登录用户ID
     * @throws Exception
     */
    public void currentUserSign(Long userId) throws Exception;

    /**
     * 通过用户ID 查询一条数据
     *
     * @param userId
     * @return SignIn
     * @throws Exception
     */
    public SignIn queryByUserId(Long userId) throws Exception;

    /**
     * 校验能否签到
     *
     * @param userId 校验的用户ID
     * @return true/false
     * @throws Exception
     */
    public boolean ableSignIn(Long userId) throws Exception;

    /**
     * 校验能否签到
     *
     * @param nowDate      当前日期时间（格式 'yyyy-MM-dd HH:mm:ss'）
     * @param lastSignDate 最后签到日期时间（格式 'yyyy-MM-dd HH:mm:ss'）
     * @return true/false
     * @throws Exception
     */
    public boolean ableSignIn(String nowDate, String lastSignDate) throws Exception;

    /**
     * 更新【签到总天数】
     *
     * @param signInId 签到头表ID
     * @return 签到总天数
     * @throws Exception
     */
    public double signInDaysUpdate(Long signInId) throws Exception;
}
